package irisweb

import (
	"strings"

	"github.com/kataras/iris"
)

// DefaultOnAnyErrorCodeHandler 默认的所有错误code处理
func DefaultOnAnyErrorCodeHandler(ctx iris.Context) {
	// 排除
	if strings.ToLower(ctx.Request().RequestURI) == "/favicon.ico" {
		return
	}
	// 获取之前的错误code
	reservedStatusCode := ctx.GetStatusCode()
	// 重置状态码
	ctx.StatusCode(200)

	var eName, eMessage string
	var eCode int
	if reservedStatusCode == 500 {
		eName = ctx.Values().Get("__eName").(string)
		eMessage = ctx.Values().Get("__eMessage").(string)
		eCode = ctx.Values().Get("__eCode").(int)
	} else {
		eCode = reservedStatusCode
		eName = StatusCodeMap[eCode]
		eMessage = eName
	}

	// 输出
	WriteJSONError(ctx, reservedStatusCode, eCode, eName, eMessage)
}
